Recent years have witnessed an explosive growth of servers in enterprise data centers and clouds. Those machines usually come from different venders with a wide range of hardware configurations with different hardware specifications such as processor speed, processor cache size, and so on. Such a heterogeneity introduces extra challenges in system management. For example, we need to differentiate the computation capabilities of various hardware configurations in order to evenly distribute workloads across machines. In the capacity planning task, that knowledge is also required to determine the right number and types of servers to be purchased for the increasing workloads. The recent resurgence of virtualization technology opens up huge demand for application performance mapping across heterogeneous hardware, because virtualization allows applications to migrate between different machines. If the source and target machines after migration have different hardware configurations with different hardware specifications or settings, many system management tools that build a performance model on the initial hardware setting may require recalibration.
The above challenges of server heterogeneity call for a technique that can accurately map application performance across machines with different hardware specifications and settings. A number of techniques have been proposed for accurately mapping application performance across machines with different hardware specifications and settings, but these techniques are limited in one way or another. These techniques can be divided into two classes. The first class evaluates application performance on a number of different servers in advance, and builds a model to summarize the application performance across those machines. In practice, however, it is difficult to collect enough data from machines with different hardware configurations. With the lack of measurement data, the real (actual) evaluation based techniques only include a limited number of hardware parameters, and rely on simple models such as the linear regression to learn their relationships. Such a simplification significantly jeopardizes the prediction accuracy of application performance.
In order to address the data insufficiency issue, the second class of techniques relies on software simulation to collect data for performance modeling. There are many simulation tools that can construct a complete microprocessor pipeline in software to approximate the application performance on any specified hardware device. By using those tools, sufficient data can be collected from a wide range of hardware configurations to learn a complete model for predicting application performance. By its very nature, however, the software based simulation necessarily yields uncertain and inaccurate data due to the specification inaccuracy, implementation imprecision, and other factors in those tools. As a consequence, the quality of the learned model can be affected by those errors.
Accordingly, a new method and apparatus is needed for predicting application performance across machines with different hardware configurations.